package uniandes.asoft.experimento1.servidor.negocio;

import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.net.Socket;

public class ConexionVehiculo extends Thread {

	private Socket conexion;
	private ObjectInputStream entrada;
	private ObjectOutputStream salida;

	private int idVehiculo;
	private Servidor servidor;

	public ConexionVehiculo(Servidor servidor, Socket conexion, int idVehiculo) {

		this.servidor = servidor;
		this.conexion = conexion;
		this.idVehiculo = idVehiculo;
		obtenerFlujos();

	}

	public void obtenerFlujos() {

		try {

			salida = new ObjectOutputStream(conexion.getOutputStream());
			salida.flush();

			entrada = new ObjectInputStream(conexion.getInputStream());

			System.out.print("\n Vehiculo " + idVehiculo + " : "
					+ " Se recibideron los flujos de E/S \n");

		} catch (IOException e) {

			System.out.print("Excepcion obtenerFlujos(): " + e.toString());
		}

	}

	public void procesarConexion() throws IOException {

		String mensaje = "Conexion exitosa";

		do {

			try {
				mensaje = (String) entrada.readObject();
				System.out
						.print("\n Vehiculo  " + idVehiculo + " : " + mensaje);

			} catch (ClassNotFoundException e) {

				cerrarConexion();
				break;
			} catch (IOException e) {
				cerrarConexion();
				break;
			}

		} while (!mensaje.equals("CLIENTE>>> TERMINAR"));
		conexion.close();
	}

	public void run() {

		System.out.print("\n Vehiculo: " + idVehiculo + " Conectado \n");
		try {
			procesarConexion();
		} catch (IOException e) {

			e.printStackTrace();
		}

	}

	public void cerrarConexion() throws IOException {
		conexion.close();
		servidor.contador--;

	}

}
